Serverless Framework のサービス開始時によくやる作業をまとめてみた
「サービス開始時によくやる作業って何だっけ?」
ってたまになりませんか?今回はいくつかサービスを作った経験を元に、Serverless Framework のサービス開始時によくやる作業を整理してみました。
前提条件
Serverless Framework を利用するにあたり、初回のみ設定が必要な作業は済んでいる前提で進めます。
- Serveless Framework のインストール
- Serveless Framework 用の AWS アカウントの設定
未実施の方は、以下のブログなどを参照して設定してください。
やってみた
以下の流れで作業します。
- サービスの作成
- Git の設定
- プラグインのインストール
- パッケージのインストール
- state-machines.yml と serverless.yml の初期設定
最終的なファイル構成は以下です(一部省略)。
test-sls ├── .gitignore ├── Pipfile ├── Pipfile.lock ├── handler.py ├── includes │ └── state-machines.yml ├── package-lock.json ├── package.json └── serverless.yml
1.サービスの作成
Serverless Framework のサービスを作成します。 今回のサービス名は test-sls です。
$ serverless create --template aws-python3 --path test-sls Serverless: Generating boilerplate... Serverless: Generating boilerplate in "{省略}" _______ __ | _ .-----.----.--.--.-----.----| .-----.-----.-----. | |___| -__| _| | | -__| _| | -__|__ --|__ --| |____ |_____|__| \___/|_____|__| |__|_____|_____|_____| | | | The Serverless Application Framework | | serverless.com, v2.8.0 -------' Serverless: Successfully generated boilerplate for template: "aws-python3"
2.Git の設定
ディレクトリを移動して、Git 設定をします。
$ cd test-sls $ git init Initialized empty Git repository in {省略}/test-sls/.git/
お好みのエディターで .gitignore を以下のように編集します。 プロジェクトの容量を無駄に大きくしない為に、node_modules などを commit 対象から外しています。
# Distribution / packaging .Python env/ build/ develop-eggs/ dist/ downloads/ eggs/ .eggs/ lib/ lib64/ parts/ sdist/ var/ *.egg-info/ .installed.cfg *.egg .idea/ __pycache__/ # Serverless directories .serverless node_modules/
一旦、今までの編集内容を commit する
$ git add .gitignore handler.py serverless.yml $ git commit -m "First Commit"
3.プラグインのインストール
プラグインをインストールします。 今回はよく使うプラグインを入れます。 プラグインを入れたら、変更内容を commit しておきます。
$ sls plugin install -n serverless-step-functions && sls plugin install -n serverless-python-requirements Serverless: Creating an empty package.json file in your service directory Serverless: Installing plugin "serverless-step-functions@latest" (this might take a few seconds...) Serverless: Successfully installed "serverless-step-functions@latest" Serverless: Installing plugin "serverless-python-requirements@latest" (this might take a few seconds...) Serverless: Successfully installed "serverless-python-requirements@latest" $ git add serverless.yml package-lock.json package.json $ git commit -m "sls plugin install -n serverless-step-functions && sls plugin install -n serverless-python-requirements"
4.パッケージのインストール
パッケージをインストールします。 今回はよく使うパッケージを入れます。 パッケージを入れたら、変更内容を commit しておきます。
$ pipenv install requests boto3 $ git add Pipfile Pipfile.lock $ git commit -m "pipenv install requests boto3"
5.state-machines.yml & serverless.yml の初期設定
AWS Step Functions を使うことも多いので、state-machines.yml を用意します。 個人的には includes というフォルダを作成してファイルを配置することが多いです。
$ mkdir includes $ touch includes/state-machines.yml
state-machines.yml は仮で以下のように編集しておきます。
stateMachines: countfunc: name: TestSLS-${self:provider.stage} definition: StartAt: Hello States: Hello: Type: Task InputPath: "$" Resource: Fn::GetAtt: [hello, Arn] ResultPath: "$" Next: Done Done: Type: Pass End: true
serverless.yml は仮で以下のように編集しておきます。
service: test-sls provider: name: aws runtime: python3.8 stage: ${opt:stage, self:custom.defaultStage} region: ${opt:region, self:custom.defaultRegion} custom: pythonRequirements: usePipenv: true defaultStage: dev defaultRegion: ap-northeast-1 #environment: #dev: #prod: functions: hello: handler: handler.hello #environment: ${self:custom.environment.${self:provider.stage}} stepFunctions: ${file(includes/state-machines.yml)} plugins: - serverless-step-functions - serverless-python-requirements
追加の変更内容を commit しておきます。
$ git add serverless.yml includes/ $ git commit -m "Initial Setup serveless.yml & includes/state-machines.yml"
終わりに
いかがでしたでしょうか。 あくまで自己流なので、必要に応じてカスタマイズいただければと思います。 Serverless Framework を使う皆さんに少しでも役に立っていれば幸いです。
以上、 筧(カケイ) がお送りしました。